package com.itheima.datasource.c3p0;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * 数据库连接池
 *      传统的JDBC中每一次我们都要去先申请连接 用完了就释放 等下次使用的时候又要重新申请连接   --> 太浪费资源
 *      数据库连接池
 *         在系统给初始化好了过后 搞一个容器 这个容器里面申请了很多的连接对象
 *         这样用户申请连接的时候就不再向数据库底层要连接了 而是去使用数据库连接池中的连接
 *         当用户访问完了过后 不会去释放连接 而是放回连接池中
 *         于是每一次申请系统底层连接这个操作就被省掉了
 *      其实就是一个存放数据库连接的容器 系统初始化的时候会申请一些连接对象
 *      好处：
 *          节约资源
 *          高效
 * 数据库连接池的实现
 *      dataSource --> 数据库连接池 一个接口 他也是一套规范
 *          获取连接：getConnection()
 *          归还连接：Connection.close() --> 归还连接
 *      一般这个也是由数据库厂商提供的驱动实现 ： C3P0   Druid
 *
 * C3P0的实现步骤
 *      导入 jar 包  c3p0-0.9.1.2.jar  mchange-commons-java-0.2.11.jar 还有数据库的驱动 jar 包
 *      定义配置文件 名称必须是：C3P0.properties 或 C3p0-config.xml  因为他会自动去 src 目录下找这两个配置文件
 *      创建核心对象 ComboPooledDataSource
 *      获取连接：ComboPooledDataSource.getConnection()
 */
public class C3P0Demo1 {
    public static void main(String[] args) throws SQLException {
        //创建数据库连接池对象
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        //获取连接对象
        Connection connection = comboPooledDataSource.getConnection();
        //打印
        System.out.println(connection);
    }
}
